import { loginByEmail } from '@/api/user/login';

import cookies from '@/utils/cookies.js';

export default {
  namespaced: true,
  actions: {
    /**
     * @description 登录
     * @param {Object} param context
     * @param {Object} param vm {Object} vue 实例
     * @param {Object} param username {String} 用户账号
     * @param {Object} param password {String} 密码
     * @param {Object} param route {Object} 登录成功后定向的路由对象
     */
    login(
      { dispatch, commit },
      {
        vm,
        name,
        pwd,
        route = {
          name: 'index'
        }
      }
    ) {
      // 开始请求登录接口
      loginByEmail({
        username: name,
        password: pwd
      })
        .then(async res => {
          // 设置 cookie 一定要存 uuid 和 token 两个 cookie
          // 整个系统依赖这两个数据进行校验和存储
          // uuid 是用户身份唯一标识 用户注册的时候确定 并且不可改变 不可重复
          // token 代表用户当前登录状态 建议在网络请求中携带 token
          // 如有必要 token 需要定时更新，默认保存一天
          // if (res.respCode !== '0') {
          //   reject('xx');
          //   return;
          // }
          let result = res;
          let token = res.data;
          cookies.set('token', token);
          commit('base/user/s_token', token, {
            root: true
          });

          // 设置 vuex 用户信息
          await dispatch('base/user/load', {}, { root: true });
        })
        .catch(err => {
          console.log('err: ', err);
        });
    }
  }
};
